package com.kingsoft.miot.bridge.service;

import com.kingsoft.miot.bridge.pojo.account.AccountRecord;

public interface AccountService {

	/**
	 * method: post 这个函数， 主要是给验证服务器之间的签名是否合法而准备
	 * 
	 * @param echoStr
	 * @return
	 */
	public String echoTest(String echoStr);

	/**F
	 * 添加新的账号
	 * 
	 * @param accountRecord
	 */
	public void addAccountRecord(AccountRecord accountRecord);

	/**
	 * method: post 接口： 给group id， auth unit id，发送绑定手机号码的短信(获取验证码)
	 * 
	 * @param phone
	 * @return
	 */
	public String bindPhoneSms(String phone);

	/**
	 * method: post 接口： 给group id, auth unit id, 设置接收bindkey的手机号 说明 :
	 * 必须获得验证码以后才能成功这个函数
	 * 
	 * @param phoneTicket 验证码
	 * @return
	 */
	public String bindPhone(String phoneTicket);

	/**
	 * method: post 接口： 通过group id， auth unit id, 给手机号发送bindkey（设备绑定） 不用任何额外参数，
	 * 但是_data字段，要设置为空。_data={} 说明： 通过group id， auth unit id, 给手机号发送bindkey
	 * 
	 * @return
	 */
	public String bindKeySms();

	/**
	 * method:post 接口： 通过group id， auth unit id，生成一个control unit(控制设备) 不用任何额外参数，
	 * 但是_data字段，要设置为空。_data={}
	 * 
	 * @return
	 */
	public String controlUnit(String authid);

	/**
	 * method: get 接口： 通过group id， auth unit id， 获取所有的control units
	 * 
	 * @param cursor 游标， 用于翻页获取数据时候的参数
	 * @param limit  每次能获取control units的个数。 最大值为20个。
	 * 
	 *               说明：第一次调用的时候， cursor值设置为空（"")。之后，只 要hasMore == false,
	 *               就要将cursor值取出，并用于下一次请求，直到hasMore == true
	 * @return
	 */
	public String controlUnits(String cursor, int limit);

	/**
	 * method: post 接口：禁止设备Reset
	 * 
	 * @param controlUnitId 要禁止的control unit id
	 * @param did           从get device list中获取的real_did 注意：control unit id,
	 *                      di都要放入dataJson，参考代码如下： JSONObject dataValueJson = new
	 *                      JSONObject(); dataValueJson.put("controlUnitId",
	 *                      controlUnit); dataValueJson.put("compact", false);
	 *                      dataValueJson.put("did", "12345678"); httpparams.add(new
	 *                      BasicNameValuePair("_data", data));
	 * @return
	 */
	public String disableReset(long controlUnitId, String did);

	/**
	 * method: get 接口：获取设备Reset状态
	 * 
	 * @param controlUnitId 要获取禁止状态的control unit it
	 * @param did           从get device list中获取的real_did 注意：control unit id,
	 *                      di都要放入dataJson，参考代码如下： JSONObject dataValueJson = new
	 *                      JSONObject(); dataValueJson.put("controlUnitId",
	 *                      controlUnit); dataValueJson.put("compact", false);
	 *                      dataValueJson.put("did", "12345678"); httpparams.add(new
	 *                      BasicNameValuePair("_data", data));
	 * @return
	 */
	public String getDisableReset(long controlUnitId, String did);

	/**
	 * method: get 接口：RPC
	 * 
	 * @param controlUnitId rpc的control unit it
	 * @param did           从get device list中获取的real_did
	 * @param rpcName       rpc调用名
	 * @param params        rpc调用参数
	 * @return
	 */
	public String rpc(long controlUnitId, String did, String rpcName, String params);

	/**
	 * method: get 接口：设置group管理员
	 * 
	 * @param userId 该Group的管理员小米账号 说明: 注意：userId都要放入dataJson，参考代码如下： JSONObject
	 *               dataValueJson = new JSONObject(); dataValueJson.put("userId",
	 *               controlUnit); httpparams.add(new BasicNameValuePair("_data",
	 *               data));
	 * @return
	 */
	public String setMgr(long userId);

	/**
	 * method: get 接口：删除group管理员
	 * 
	 * @param userId
	 * @return
	 */
	public String delMgr(long userId);
}
